{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Generate Datasets for Training and Testing on a single machine\n",
    "\n",
    "In this notebook, we report the code to generate datasets for training and testing the neural network models.\n",
    "The datasets contain channel realizations of a realistic LTE link operating over an industry-standard radio channel model.\n",
    "\n",
    "**Note**: Running this code on a sigle machine might be computationally heavy, therefore we suggest the reader to use a cluster of machine if possible. Please refer to \"radio_data/Generate_Data_Distributed.ipynb\", in which the same code as in this notebook is structured to be run on a cluster of machines using the package `ray`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING: Not monitoring node memory since `psutil` is not installed. Install this with `pip install psutil` (or ray[debug]) to enable debugging of memory-related crashes.\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "import itpp\n",
    "import ray\n",
    "import os\n",
    "\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "from src import TDL_channel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def _run_link_simulation(block_size, \n",
    "                         modorder,\n",
    "                         nrof_subcarriers,\n",
    "                         snr, \n",
    "                         channel_coeff):\n",
    "    \n",
    "    from src import single_link_bicm_ofdm\n",
    "\n",
    "    channel_block_fading = np.tile(np.transpose(channel_coeff), (12, 1))\n",
    "    \n",
    "    return single_link_bicm_ofdm.simulate(block_size, \n",
    "                                          modorder,\n",
    "                                          nrof_subcarriers,\n",
    "                                          snr, \n",
    "                                          channel_block_fading)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Channel Generation\n",
    "fft_size       = 128\n",
    "channel_model  = 'ITU_VEHICULAR_B'\n",
    "relative_speed = 33.33 # m/s\n",
    "\n",
    "nrof_subcarriers = 72\n",
    "snrs_db        = [5, 10, 15, 20, 25] \n",
    "\n",
    "TRANSPORT_BLOCK_SIZES = [152, 200, 248, 320, 408, 504, 600, 712, 808, 936, \n",
    "                         936, 1032, 1192, 1352, 1544, 1736, 1800, \n",
    "                         1800, 1928, 2152, 2344, 2600, 2792, 2984, 3240, 3496, 3624, 3752, 4008]\n",
    "MODULATION_ORDERS     = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \n",
    "                         4, 4, 4, 4, 4, 4, 4, \n",
    "                         6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "nrof_snrs = len(snrs_db)\n",
    "nrof_samples = 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/lissy/Documents/mypython/lib/python3.6/site-packages/matplotlib/ticker.py:2241: UserWarning: Data has no positive values, and therefore cannot be log-scaled.\n",
      "  \"Data has no positive values, and therefore cannot be \"\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Block size index 0, TBS 176, Elapsed: 0.61s\n",
      "Block size index 1, TBS 224, Elapsed: 1.12s\n",
      "Block size index 2, TBS 272, Elapsed: 1.71s\n",
      "Block size index 3, TBS 344, Elapsed: 2.26s\n",
      "Block size index 4, TBS 432, Elapsed: 2.82s\n",
      "Block size index 5, TBS 528, Elapsed: 3.42s\n",
      "Block size index 6, TBS 624, Elapsed: 4.14s\n",
      "Block size index 7, TBS 736, Elapsed: 5.48s\n",
      "Block size index 8, TBS 832, Elapsed: 6.43s\n",
      "Block size index 9, TBS 960, Elapsed: 7.19s\n",
      "Block size index 10, TBS 960, Elapsed: 7.96s\n",
      "Block size index 11, TBS 1056, Elapsed: 8.78s\n",
      "Block size index 12, TBS 1216, Elapsed: 9.64s\n",
      "Block size index 13, TBS 1376, Elapsed: 10.56s\n",
      "Block size index 14, TBS 1568, Elapsed: 11.54s\n",
      "Block size index 15, TBS 1760, Elapsed: 12.59s\n",
      "Block size index 16, TBS 1824, Elapsed: 13.65s\n",
      "Block size index 17, TBS 1824, Elapsed: 14.84s\n",
      "Block size index 18, TBS 1952, Elapsed: 16.05s\n",
      "Block size index 19, TBS 2176, Elapsed: 17.45s\n",
      "Block size index 20, TBS 2368, Elapsed: 18.81s\n",
      "Block size index 21, TBS 2624, Elapsed: 20.24s\n",
      "Block size index 22, TBS 2816, Elapsed: 21.76s\n",
      "Block size index 23, TBS 3008, Elapsed: 23.32s\n",
      "Block size index 24, TBS 3264, Elapsed: 24.99s\n",
      "Block size index 25, TBS 3520, Elapsed: 26.75s\n",
      "Block size index 26, TBS 3648, Elapsed: 28.53s\n",
      "Block size index 27, TBS 3776, Elapsed: 30.38s\n",
      "Block size index 28, TBS 4032, Elapsed: 32.33s\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''Generate the channel realizations'''\n",
    "\n",
    "channel_coeff = np.ndarray((nrof_samples, nrof_subcarriers, nrof_snrs), dtype=np.complex128)\n",
    "\n",
    "if channel_model != 'AWGN':\n",
    "    for snr_index in range(nrof_snrs):\n",
    "        channel_response = TDL_channel.channel_frequency_response( fft_size,\n",
    "                                                                   relative_speed,\n",
    "                                                                   channel_model,\n",
    "                                                                   nrof_samples )\n",
    "\n",
    "        channel_coeff[:,:,snr_index] = channel_response.T().to_numpy_ndarray()[:, :nrof_subcarriers]\n",
    "else:\n",
    "    channel_coeff[:, :, :] = 1\n",
    "\n",
    "legend_strings = []\n",
    "\n",
    "block_success_dataset = np.ndarray((nrof_samples, len( TRANSPORT_BLOCK_SIZES ), nrof_snrs))\n",
    "channel_to_noise_ratio_dataset = np.ndarray((nrof_subcarriers, nrof_samples, nrof_snrs))\n",
    "\n",
    "start = time.time()\n",
    "for block_size_index in range( len( TRANSPORT_BLOCK_SIZES ) ):\n",
    "\n",
    "    block_size = TRANSPORT_BLOCK_SIZES[ block_size_index]  + 24 # 24 bit CRC\n",
    "    modorder = MODULATION_ORDERS[ block_size_index ]\n",
    "\n",
    "    bler_vs_snr = []\n",
    "\n",
    "    outcome = [_run_link_simulation(block_size, \n",
    "                                    modorder,\n",
    "                                    nrof_subcarriers,\n",
    "                                    snrs_db[i], \n",
    "                                    channel_coeff[:,:,i]) for i in range(nrof_snrs)]\n",
    "\n",
    "    for snr_index in range(nrof_snrs):\n",
    "        block_success_dataset[:, block_size_index, snr_index] = outcome[snr_index][1]\n",
    "\n",
    "        bler_vs_snr.append(outcome[snr_index][0])\n",
    "   \n",
    "\n",
    "    legend_strings.append('TBS %df' %(block_size))\n",
    "    plt.semilogy(snrs_db, bler_vs_snr)\n",
    "\n",
    "    print('Block size index %d, TBS %d, Elapsed: %0.2fs' %(block_size_index, \n",
    "                                                           block_size, \n",
    "                                                           time.time() - start))\n",
    "\n",
    "FADING_CHANNEL_DATASET = {'channel': channel_coeff, \n",
    "                          'block_success': block_success_dataset,\n",
    "                          'block_sizes': TRANSPORT_BLOCK_SIZES,\n",
    "                          'snrs_db': snrs_db}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "FADING_CHANNEL_DATASET = {'channel': channel_coeff, \n",
    "                          'block_success': block_success_dataset,\n",
    "                          'block_sizes': TRANSPORT_BLOCK_SIZES,\n",
    "                          'snrs_db': snrs_db}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_filepath = 'sim_data/sim_0001/'\n",
    "data_filename = 'dataset.npy'  \n",
    "\n",
    "if not os.path.exists(data_filepath):\n",
    "    os.makedirs(data_filepath)  \n",
    "\n",
    "np.save(data_filepath + data_filename, FADING_CHANNEL_DATASET)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
